');
}
return layouts.join('');
},
getNoticeHtml: function (prop) {
var data = prop.data;
var announceCon = data.announceCon;
var dispFrontAnnounceNo = data.dispFrontAnnounceNo;
var listCounter = prop.index + 1;
var $notice = $('
');
$notice.find('a').each(function (index, element) {
var marketingData = 'n_' + dispFrontAnnounceNo + '_' + listCounter;
$(this).attr('data-cttn', marketingData);
});
return $notice.html();
},
getSlide: function (prop) {
var layouts = [];
if (isFloaingBanner) {
layouts.push('
');
} else {
if (isEMALL) {
layouts.push('
');
} else {
layouts.push('
');
}
layouts.push('
');
layouts.push(this.getNoticeHtml(prop));
layouts.push('
');
layouts.push('
');
}
return layouts.join('');
},
getSlides: function (props) {
var datas = props.datas;
var layouts = [];
datas.forEach(function (data, index) {
layouts.push(this.getSlide({
data: data,
index: index
}));
}.bind(this));
return layouts.join('');
},
bindEvents: function (type) {
if (!this.loaded) return;
if (type) {
_this.obj.on(_this.changeEvents('click'), _this.opts.userCloseBtn, this.closeClick.bind(this));
_this.$sliderWrap.on(_this.changeEvents('mouseenter mouseleave focusin'), this.wrapMouseFunc.bind(this));
} else {
_this.obj.off(_this.changeEvents('click'));
_this.$sliderWrap.off(_this.changeEvents('mouseenter mouseleave focusin'));
}
},
bindOutsideEvents: function (type) {
if (!this.loaded) return;
if (type) {
_this.$sliderWrap.on(_this.changeEvents('focusoutside clickoutside touchendoutside'), this.focusoutFunc.bind(this));
} else {
_this.$sliderWrap.off(_this.changeEvents('focusoutside clickoutside touchendoutside'));
}
},
wrapMouseFunc: function (e) {
if (e.type == 'mouseenter' || e.type == 'focusin') {
this.focusinFunc();
} else if (e.type == 'mouseleave') {
this.focusoutFunc();
}
},
focusinFunc: function () {
if (!_this.opts.stateAttr.focusin) {
_this.opts.stateAttr.focusin = true;
_this.$sliderWrap.addClass(classAttr.focusin);
this.bindOutsideEvents(true);
}
},
focusoutFunc: function () {
_this.opts.stateAttr.focusin = false;
_this.$sliderWrap.removeClass(classAttr.focusin);
this.bindOutsideEvents(false);
},
closeClick: function (e) {
e.preventDefault();
var todayDate = new Date();
var expiredays = 1;
todayDate = new Date(parseInt(todayDate.getTime() / 86400000) * 86400000 + 54000000);
if (todayDate > new Date()) {
expiredays = expiredays - 1;
}
todayDate.setDate(todayDate.getDate() + expiredays);
// document.cookie = _this.opts.cookieName + "=y; path=/; expires=" + todayDate.toGMTString() + ";"
Util.localStorage.set(_this.opts.cookieName, String(todayDate.getTime()));
},
destroy: function () {
this.bindEvents(false);
this.bindOutsideEvents(false);
},
build: function (props) {
this.loaded = true;
var datas = props.datas;
if (_this.$html.hasClass('pc')) {
this.viewport = 'pc';
}
// var _w = this.opts[this.viewport].w;
// var _h = null;
// if (_this.opts.width != null) {
// _w = _this.opts.width;
// }
// if (_this.opts.height != null) {
// _h = _this.opts.height;
// }
var getWrapper = this.getWrapper();
var getSlides = this.getSlides({
datas: datas.list
});
var $getSlides = $(getSlides);
var $getWrapper = $(getWrapper);
if (isFloaingBanner) {
var $sliderWrap = $getWrapper.find('.cm-slider');
} else {
var $sliderWrap = $getWrapper.find('.cm-slider-wrap');
}
// $sliderWrap.css('width', _w);
// if (_h != null) {
// $sliderWrap.css('height', _h);
// }
$getWrapper.find('.swiper-wrapper').append($getSlides);
_this.obj = $getWrapper;
_this.$sliderWrap = $sliderWrap;
_this.sliderEl = $getWrapper.find('.cm-slider');
_this.$body.prepend($getWrapper);
_this.layer.build();
var $fSlide = $sliderWrap.find('.swiper-slide').eq(0);
var $fImgs = $fSlide.find('img');
(function () {
var max = $fImgs.length;
var loadNum = 0;
var done = function () {
loadNum++;
if (loadNum == max) {
if (!_this.opts.stateAttr.destroy) {
_this.obj.trigger('openLayer');
this.bindEvents(true);
}
}
}.bind(this);
var load = function (i) {
var $img = $fImgs.eq(i);
var image = document.createElement('img');
var loaded = function () {
done();
};
image.addEventListener('load', function () {
loaded();
});
image.addEventListener('error', function () {
loaded();
});
image.src = $img.attr('src');
};
for (var i = 0; i < max; i++) {
load(i);
}
}.bind(this))();
}
}
});
},
buildSlider: function () {
var _this = this;
var isFloaingBanner = this.params.isFloaingBanner;
Util.def(this, {
slider: {
opts: {
loop: true,
init: false
},
instance: null,
destroy: function () {
if (this.instance == null) return;
this.instance.destroy(false, true);
this.instance.destroy(true, true);
this.instance = null;
},
build: function () {
if (this.instance != null) return;
if (isFloaingBanner) {
Util.def(this.opts, {
pagination: {
type: 'fraction'
}
});
}
this.instance = new cmSlider(_this.sliderEl, this.opts);
this.instance.init();
}
}
});
},
buildLayer: function () {
var _this = this;
var isFloaingBanner = this.params.isFloaingBanner;
if (isFloaingBanner) {
var classAttr = this.opts.classAttr;
Util.def(this, {
layer: {
instance: null,
destroy: function () {
if (this.instance == null) return;
this.instance.destroy();
_this.obj.off(_this.changeEvents('layerOpenStart'));
_this.obj.off(_this.changeEvents('layerCloseAfter'));
this.instance = null;
},
prevent: function (type) {
if (this.instance == null) return;
if (type) {
} else {
_this.$html.removeClass(classAttr.floatingOpen);
}
},
open: function () {
if (this.instance == null) return;
_this.obj.trigger('openLayer');
},
close: function () {
if (this.instance == null) return;
_this.obj.trigger('closeLayer');
},
build: function () {
if (this.instance != null) return;
if (_this.obj.data('CmFloating') == isUndefined) {
this.instance = new CmFloating(_this.obj);
} else {
this.instance = _this.obj.data('CmFloating');
}
_this.obj.on(_this.changeEvents('layerOpenStart'), function () {
this.prevent(true);
_this.slider.build();
}.bind(this));
_this.obj.on(_this.changeEvents('layerCloseAfter'), function () {
this.prevent(false);
_this.slider.destroy();
layerOpened = false;
}.bind(this));
}
}
});
} else {
Util.def(this, {
layer: {
instance: null,
destroy: function () {
if (this.instance == null) return;
this.instance.destroy();
_this.obj.off(_this.changeEvents('layerOpenStart'));
_this.obj.off(_this.changeEvents('layerCloseAfter'));
this.instance = null;
},
active: function () {
if (this.instance == null) return;
},
build: function () {
if (this.instance != null) return;
if (_this.obj.data('CmLayer') == isUndefined) {
this.instance = new CmLayer(_this.obj, {
effect: 'default',
useOutside: true,
});
} else {
this.instance = _this.obj.data('CmLayer');
}
_this.obj.on(_this.changeEvents('layerOpenStart'), function () {
_this.slider.build();
}.bind(this));
_this.obj.on(_this.changeEvents('layerCloseAfter'), function () {
_this.slider.destroy();
layerOpened = false;
}.bind(this));
}
}
});
}
},
changeEvents: function (event) {
var events = [],
eventNames = event.split(' ');
for (var key in eventNames) {
events.push(eventNames[key] + this.opts.customEvent);
}
return events.join(' ');
},
bindEvents: function (type) {
if (type) {
$('[data-mainnoticelayer-cookiedel]').on(this.changeEvents('click'), function (e) {
e.preventDefault();
Util.cookie.set(this.opts.cookieName, 'y', '');
}.bind(this));
} else {
$('[data-mainnoticelayer-cookiedel]').off(this.changeEvents('click'));
}
},
destroy: function () {
this.opts.stateAttr.destroy = true;
win.clearTimeout(this.starttime);
layerOpened = false;
if (this.opts.stateAttr.ajaxGet != null) {
this.opts.stateAttr.ajaxGet.abort();
}
this.layout.destroy();
this.slider.destroy();
this.layer.destroy();
this.bindEvents(false);
}
};
return Component;
})();
return Component;
}));
(function (global, factory) {
global = global;
global.layerOpener = factory();
}(this, function () { 'use strict';
var Component = (function (isUndefined) {
var win = window,
INSTANCES = [];
function Component (url, args) {
var deferred = $.Deferred();
var Util = win.EB.util;
var defParams = {
url: url,
customEvent: '.Component' + (new Date()).getTime() + Math.random()
};
var opts = Util.def(defParams, (args || {}));
var $body = $('body');
var instance = (function () {
var r = false;
INSTANCES.forEach(function (inst) {
if (inst.url == opts.url) {
r = inst;
}
});
return r;
})();
if (instance) {
var $targetLayer = instance.$targetLayer;
var cmLayer = instance.cmLayer;
$targetLayer.trigger('openLayer');
deferred.resolve(cmLayer);
} else {
if (!Util.page.ajaxLoading) {
Util.page.ajaxLoading = true;
var awaitInstance = new AwaitLoader($('body'));
var params = Util.def({}, opts.params);
params.url = opts.url;
params.dataType = 'html';
params.complete = function () {
Util.page.ajaxLoading = false;
};
eAjax.get(params).done(function (response) {
Util.page.ajaxLoading = false;
var $response = $(response);
var checkError = Util.page.check.error(response);
if (checkError.state) {
var $targetLayer = checkError.$layer;
$body.append($targetLayer);
var cmLayer = new CmLayer($targetLayer);
$targetLayer.on('layerCloseAfter', function () {
cmLayer.destroy();
$targetLayer.remove();
});
awaitInstance.finish();
$targetLayer.trigger('openLayer');
deferred.resolve(cmLayer);
} else {
$body.append($response);
var $targetLayer = (opts.hasOwnProperty('target') && $body.find(opts.target).length) ? $body.find(opts.target) : $body.find('.cm-layer').last();
var cmLayer = new CmLayer($targetLayer);
var sliderRefresh = function () {
var $slider = $targetLayer.find('.swiper-container');
for (var i = 0, max = $slider.length; i < max; i++) {
(function (idx) {
var $slide = $slider.eq(idx);
var inst = $slide.data('cmSlider');
if (inst != isUndefined) {
inst.me.update();
}
})(i);
}
};
Util.page.scriptLoaded(response).done(function () {
var dataCp = $targetLayer.attr('data-cp');
if ((dataCp != isUndefined) && win.cp.hasOwnProperty(dataCp)) {
win.cp[dataCp]($targetLayer);
}
Util.page.rerun({
type: 'flick',
target: $targetLayer
});
$targetLayer.on('layerOpenStart', function () {
sliderRefresh();
});
var prop = {
url: opts.url,
$targetLayer: $targetLayer,
cmLayer: cmLayer
};
INSTANCES.push(prop);
awaitInstance.finish();
$targetLayer.trigger('openLayer');
deferred.resolve(cmLayer);
});
}
}).fail(function () {
awaitInstance.finish();
win.alert('데이터를 불러오지 못했습니다.');
});
}
}
return deferred.promise();
}
return Component;
})();
return Component;
}));
(function (global, factory) {
global = global;
global.layerAsyncOpener = factory();
}(this, function () { 'use strict';
var Component = (function (isUndefined) {
var win = window,
layerOpened = false;
function Component (url, args) {
var deferred = $.Deferred();
var Util = win.EB.util;
var defParams = {
url: url,
customEvent: '.Component' + (new Date()).getTime() + Math.random()
};
var opts = Util.def(defParams, (args || {}));
var $body = $('body');
if (!Util.page.ajaxLoading && !layerOpened) {
Util.page.ajaxLoading = true;
layerOpened = true;
var params = Util.def({}, opts.params);
params.url = opts.url;
params.dataType = 'html';
params.complete = function () {
Util.page.ajaxLoading = false;
};
eAjax.get(params).done(function (response) {
Util.page.ajaxLoading = false;
var $response = $(response);
var checkError = Util.page.check.error(response);
if (checkError.state) {
var $targetLayer = checkError.$layer;
$body.append($targetLayer);
var cmLayer = new CmLayer($targetLayer);
$targetLayer.on('layerCloseAfter', function () {
cmLayer.destroy();
$targetLayer.remove();
layerOpened = true;
});
} else {
$body.append($response);
var $targetLayer = (opts.hasOwnProperty('target') && $body.find(opts.target).length) ? $body.find(opts.target) : $body.find('.cm-layer').last();
var cmLayer = new CmLayer($targetLayer);
Util.page.rerun({
type: 'flick',
target: $targetLayer
});
Util.page.scriptLoaded(response).done(function () {
var dataCp = $targetLayer.attr('data-cp');
if ((dataCp != isUndefined) && win.cp.hasOwnProperty(dataCp)) {
win.cp[dataCp]($targetLayer);
}
});
var sliderRefresh = function () {
var $slider = $targetLayer.find('.swiper-container');
for (var i = 0, max = $slider.length; i < max; i++) {
(function (idx) {
var $slide = $slider.eq(idx);
var inst = $slide.data('cmSlider');
if (inst != isUndefined) {
inst.me.update();
}
})(i);
}
};
$targetLayer.on('layerOpenStart', function () {
sliderRefresh();
});
$targetLayer.on('layerCloseAfter', function () {
cmLayer.destroy();
$targetLayer.off('layerOpenBefore');
$targetLayer.off('layerCloseAfter');
var omniName = $targetLayer.find('[data-omni-cp]').attr('data-omni-cp');
$targetLayer.parent().find('style[data-name="' + omniName + '"]').remove();
$targetLayer.parent().find('link[data-name="' + omniName + '"]').remove();
$targetLayer.parent().find('script[data-name="' + omniName + '"]').remove();
// $targetLayer.parent().find('style[data-loader-style]').remove();
// $targetLayer.parent().find('script[data-loader-script]').remove();
$targetLayer.remove();
layerOpened = false;
});
}
$targetLayer.trigger('openLayer');
deferred.resolve(cmLayer);
}).fail(function () {
layerOpened = false;
win.alert('데이터를 불러오지 못했습니다.');
});
}
return deferred.promise();
}
return Component;
})();
return Component;
}));
(function (global, factory) {
global = global;
global.ItemLayerOpener = factory();
}(this, function () { 'use strict';
var Component = (function (isUndefined) {
var win = window,
layerOpened = false;
function Component (url, args) {
var deferred = $.Deferred();
var Util = win.EB.util;
var defParams = {
url: url,
customEvent: '.Component' + (new Date()).getTime() + Math.random()
};
var opts = Util.def(defParams, (args || {}));
var $body = $('body');
if (!Util.page.ajaxLoading && !layerOpened) {
Util.page.ajaxLoading = true;
layerOpened = true;
var awaitInstance = new AwaitLoader($('body'));
var params = Util.def({}, opts.params);
params.url = opts.url;
params.dataType = 'html';
params.complete = function () {
Util.page.ajaxLoading = false;
};
eAjax.get(params).done(function (response) {
Util.page.ajaxLoading = false;
var $response = $(response);
var checkError = Util.page.check.error(response);
if (checkError.state) {
var $targetLayer = checkError.$layer;
$body.append($targetLayer);
var cmLayer = new CmLayer($targetLayer);
$targetLayer.on('layerCloseAfter', function () {
cmLayer.destroy();
$targetLayer.remove();
layerOpened = false;
});
awaitInstance.finish();
$targetLayer.trigger('openLayer');
deferred.resolve(cmLayer);
} else {
$body.append($response);
var $targetLayer = (opts.hasOwnProperty('target') && $body.find(opts.target).length) ? $body.find(opts.target) : $body.find('.cm-layer').last();
var cmLayer = new CmLayer($targetLayer);
var sliderRefresh = function () {
var $slider = $targetLayer.find('.swiper-container');
for (var i = 0, max = $slider.length; i < max; i++) {
(function (idx) {
var $slide = $slider.eq(idx);
var inst = $slide.data('cmSlider');
if (inst != isUndefined) {
inst.me.update();
}
})(i);
}
};
Util.page.scriptLoaded(response).done(function () {
var dataCp = $targetLayer.attr('data-cp');
if ((dataCp != isUndefined) && win.cp.hasOwnProperty(dataCp)) {
win.cp[dataCp]($targetLayer);
}
Util.page.rerun({
type: 'flick',
target: $targetLayer
});
$targetLayer.on('layerOpenStart', function () {
sliderRefresh();
});
$targetLayer.on('layerCloseAfter', function () {
if ($targetLayer.data('PrdPop') != isUndefined) {
$targetLayer.data('PrdPop').destroy();
}
cmLayer.destroy();
$targetLayer.off('layerOpenBefore');
$targetLayer.off('layerCloseAfter');
var omniName = $targetLayer.find('[data-omni-cp]').attr('data-omni-cp');
$targetLayer.parent().find('style[data-name="' + omniName + '"]').remove();
$targetLayer.parent().find('link[data-name="' + omniName + '"]').remove();
$targetLayer.parent().find('script[data-name="' + omniName + '"]').remove();
// $targetLayer.parent().find('style[data-loader-style]').remove();
// $targetLayer.parent().find('script[data-loader-script]').remove();
$targetLayer.remove();
layerOpened = false;
});
awaitInstance.finish();
$targetLayer.trigger('openLayer');
deferred.resolve(cmLayer);
});
}
}).fail(function () {
awaitInstance.finish();
layerOpened = false;
win.alert('데이터를 불러오지 못했습니다.');
});
}
return deferred.promise();
}
return Component;
})();
return Component;
}));
(function (global, factory) {
var LoginLayer = factory();
$(function () {
new LoginLayer();
});
}(this, function () { 'use strict';
var Component = (function (isUndefined) {
var win = window,
doc = win.document,
$ = win.jQuery,
Util = { },
layerOpened = false;
var ApiDomain = window.ApiDomain || {};
var Apis = { };
function Component (args) {
Util = win.EB.util;
ApiDomain = window.ApiDomain || {};
Apis = {
prefix: {
loginCheckApi: ApiDomain.www + '/login/check'
}
};
var defParams = {
obj: '.cn-login-layer',
classAttr: {
layerOpen: 'is-layer-open'
}
};
this.opts = Util.def(defParams, (args || {}));
if (!(this.obj = $(this.opts.obj)).length) return;
this.init();
};
Component.prototype = {
init: function () {
this.buildLayer();
this.loginPromise();
this.bindEvents();
},
buildLayer: function () {
var _this = this;
Util.def(this, {
layer: {
instance: null,
destroy: function () {
if (this.instance == null) return;
this.instance.destroy();
this.instance = null;
},
closeCallback: function () {
var callbackFunc = _this.obj.data('callbackFunc');
if (callbackFunc != isUndefined) {
var le = isUndefined;
var la = isUndefined;
if (_this.login.e != null) {
le = _this.login.e;
}
if (_this.login.arg != null) {
la = _this.login.arg;
}
win[callbackFunc](le, la);
_this.obj.removeData('callbackFunc');
_this.login.arg = null;
_this.login.e = null;
}
layerOpened = false;
},
build: function () {
var l = this;
if (this.instance != null) return;
if (_this.obj.data('CmLayer') == isUndefined) {
this.instance = new CmLayer(_this.obj);
} else {
this.instance = _this.obj.data('CmLayer');
}
this.instance.opts.on.layerCloseAfter = function () {
l.closeCallback();
};
}
}
});
this.layer.build();
},
loginPromise: function () {
var _this = this;
Util.def(this, {
login: {
params: {},
e: null,
arg: null
},
keyCheck: function (key, props) { return props != isUndefined && props.hasOwnProperty(key); },
getLogin: function () {
var deferred = $.Deferred();
if (!Util.page.ajaxLoading && !layerOpened) {
Util.page.ajaxLoading = true;
layerOpened = true;
eAjax.get({
url: Apis.prefix.loginCheckApi,
complete: function () {
Util.page.ajaxLoading = false;
}
}).done(function (response) {
Util.page.ajaxLoading = false;
deferred.resolve(response);
}).fail(function () {
layerOpened = false;
win.alert('로그인 체크를 할수가 없습니다.');
});
}
return deferred.promise();
},
finalDone: function (props) {
var keyCheck = _this.keyCheck;
var type = keyCheck('type', props) ? props.type : null;
var direct = keyCheck('direct', props) ? props.direct : null;
var callback = keyCheck('callback', props) ? props.callback : null;
if (type != null && type == 'reload') {
win.location.reload(true);
} else {
if (callback != null && win.hasOwnProperty(callback)) {
_this.obj.data('callbackFunc', callback);
if ((_this.layer.instance.layerViewType != isUndefined) && (_this.layer.instance.layerViewType == 'open')) {
_this.obj.trigger('closeLayer');
} else {
_this.layer.closeCallback();
}
} else {
layerOpened = false;
if (direct != null) {
win.location.href = direct;
} else {
win.alert('callback이나 direct 둘다 유효하지 않습니다.');
}
}
}
},
loginsuccess: function (arg) {
if (arg != isUndefined) {
_this.login.arg = arg;
}
var props = _this.login.params;
_this.finalDone(props);
},
loginpromise: function (props) {
_this.login.params = props;
var keyCheck = _this.keyCheck;
_this.getLogin().done(function (response) {
var hasLogin = response.data;
if (hasLogin) {
_this.finalDone(props);
} else if (CommonLogin.isKakaoInApp()) {
// 카카오 인앱의 경우 자동 로그인 진행
CommonLogin.snsAutoLogin();
} else {
var nomember = keyCheck('nomember', props) ? props.nomember.toLowerCase() : 'n';
var buy = keyCheck('buy', props) ? props.buy.toLowerCase() : 'n';
var $tab = _this.obj.find('[data-tab]');
var $btns = $tab.find('[data-tab-btn]');
if (nomember == 'y') {
var $btn = $btns.last();
} else {
var $btn = $btns.first();
}
var $child = $btn.closest('li');
if (!$child.hasClass('active')) {
$btn.trigger('click');
}
if (buy == 'y') {
_this.obj.find('[data-nonmember]').css('display', '');
} else {
_this.obj.find('[data-nonmember]').hide();
}
// if (win.hasOwnProperty('LoginLogic') && win.LoginLogic.hasOwnProperty('grecaptcha')) {
// win.LoginLogic.grecaptcha.ready();
// }
_this.obj.trigger('openLayer');
}
});
}
});
win.loginPromise = this.loginpromise;
win.loginSuccess = this.loginsuccess;
},
bindEvents: function () {
$(doc).on('click', '[data-login-promise]', this.loginPromiseClick.bind(this));
},
loginPromiseClick: function (e) {
e.preventDefault();
var $t = $(e.currentTarget);
var loginData = $t.data('login-promise');
if (typeof loginData == 'string') {
var convertHtml = Util.convertHtml(loginData);
if (convertHtml.length) {
loginData = JSON.parse(convertHtml);
}
}
var hasParams = (function () {
var dataType = typeof loginData;
var r = true;
if (dataType == 'string') {
if (!loginData.length) {
r = false;
}
} else {
if (!Object.keys(loginData).length) {
r = false;
}
}
return r;
})();
if (hasParams) {
this.login.e = Util.def({}, e);
var props = Util.def({}, loginData);
loginPromise(props);
}
}
};
return Component;
})();
return Component;
}));
(function (global, factory) {
var SelectLayer = factory();
$(function () {
new SelectLayer();
});
}(this, function () { 'use strict';
var Component = (function (isUndefined) {
var win = window,
doc = win.document,
$ = win.jQuery,
Util = { };
var ApiDomain = window.ApiDomain || { };
var Apis = { };
function Component (args) {
Util = win.EB.util;
ApiDomain = window.ApiDomain || {};
Apis = {
prefix: {
loginCheckApi: ApiDomain.www + '/login/check'
}
};
var defParams = {
obj: '.cm-layer.cp-pop-wish',
};
this.opts = Util.def(defParams, (args || {}));
if (!(this.obj = $(this.opts.obj)).length) return;
this.init();
};
Component.prototype = {
init: function () {
this.buildLayer();
this.selectPromise();
this.bindEvents();
},
buildLayer: function () {
var _this = this;
Util.def(this, {
layer: {
instance: null,
destroy: function () {
if (this.instance == null) return;
this.instance.destroy();
this.instance = null;
},
build: function () {
if (this.instance != null) return;
if (_this.obj.data('CmLayer') == isUndefined) {
this.instance = new CmLayer(_this.obj);
} else {
this.instance = _this.obj.data('CmLayer');
}
// this.instance.opts.on.layerOpenStart = function () {
// console.log('openStart');
// };
this.instance.opts.on.layerCloseAfter = function () {
var callbackFunc = _this.obj.data('callbackFunc');
if (callbackFunc != isUndefined) {
if (_this.select.e != null) {
win[callbackFunc](_this.select.e);
} else {
win[callbackFunc]();
}
_this.obj.removeData('callbackFunc');
_this.select.e = null;
}
};
}
}
});
this.layer.build();
},
selectPromise: function () {
var _this = this;
Util.def(this, {
select: {
params: {},
e: null
},
keyCheck: function (key, props) { return props != isUndefined && props.hasOwnProperty(key); },
getLogin: function () {
var deferred = $.Deferred();
eAjax.get({
url: Apis.prefix.loginCheckApi
}).done(function (response) {
deferred.resolve(response);
});
return deferred.promise();
},
finalDone: function (props) {
var keyCheck = _this.keyCheck;
var callback = keyCheck('callback', props) ? props.callback : null;
// var opts = Util.def({
// 'title_id': 'default',
// 'contents_id': '1'
// }, props);
// var $titles = _this.obj.find('[data-title_id]');
// var $activeTitle = _this.obj.find('[data-title_id="' + opts['title_id'] + '"]');
// var $contents = _this.obj.find('[data-contents_id]');
// var $activeContent = _this.obj.find('[data-contents_id="' + opts['contents_id'] + '"]');
if (callback != null && win.hasOwnProperty(callback)) {
_this.obj.data('callbackFunc', callback);
}
// $titles.not($activeTitle).hide();
// $activeTitle.css('display', '');
// $contents.not($activeContent).hide();
// $activeContent.css('display', '');
// _this.obj.trigger('openLayer');
},
selectLayerFunc: function () {
// var props = _this.select.params;
// _this.finalDone(props);
win.location.reload(true);
},
logicPromise: function (props) {
_this.select.params = props;
_this.getLogin().done(function (response) {
var hasLogin = response.data;
if (hasLogin) {
_this.finalDone(props);
} else {
_this.obj.find('[data-login-promise]').trigger('click');
}
});
}
});
win.SelectLayerFunc = this.selectLayerFunc;
},
bindEvents: function () {
$(doc).on('click', '[data-select-promise]', this.selectPromiseClick.bind(this));
},
selectPromiseClick: function (e) {
e.preventDefault();
var $t = $(e.currentTarget);
var selectData = $t.data('select-promise');
if (typeof selectData == 'string') {
var convertHtml = Util.convertHtml(selectData);
if (convertHtml.length) {
selectData = JSON.parse(convertHtml);
}
}
var hasParams = (function () {
var dataType = typeof selectData;
var r = true;
if (dataType == 'string') {
if (!selectData.length) {
r = false;
}
} else {
if (!Object.keys(selectData).length) {
r = false;
}
}
return r;
})();
if (hasParams) {
this.select.e = Util.def({}, e);
var props = Util.def({}, selectData);
this.logicPromise(props);
}
}
};
return Component;
})();
return Component;
}));
(function (global, factory) {
global = global;
global.OptionChangeOpener = factory();
}(this, function () { 'use strict';
var Component = (function (isUndefined) {
var win = window,
layerOpened = false;
function Component (url, args) {
var deferred = $.Deferred();
var Util = win.EB.util;
var defParams = {
url: url,
customEvent: '.Component' + (new Date()).getTime() + Math.random()
};
var opts = Util.def(defParams, (args || {}));
var $body = $('body');
if (!Util.page.ajaxLoading && !layerOpened) {
Util.page.ajaxLoading = true;
layerOpened = true;
var awaitInstance = new AwaitLoader($('body'));
var params = Util.def({}, opts.params);
params.url = opts.url;
params.dataType = 'html';
params.complete = function () {
Util.page.ajaxLoading = false;
};
eAjax.get(params).done(function (response) {
Util.page.ajaxLoading = false;
var $response = $(response);
var checkError = Util.page.check.error(response);
if (checkError.state) {
var $targetLayer = checkError.$layer;
$body.append($targetLayer);
var cmLayer = new CmLayer($targetLayer);
$targetLayer.on('layerCloseAfter', function () {
cmLayer.destroy();
$targetLayer.remove();
layerOpened = false;
});
awaitInstance.finish();
$targetLayer.trigger('openLayer');
deferred.resolve(cmLayer);
} else {
$body.append($response);
var $targetLayer = (opts.hasOwnProperty('target') && $body.find(opts.target).length) ? $body.find(opts.target) : $body.find('.cm-layer').last();
var cmLayer = new CmLayer($targetLayer);
var sliderRefresh = function () {
var $slider = $targetLayer.find('.swiper-container');
for (var i = 0, max = $slider.length; i < max; i++) {
(function (idx) {
var $slide = $slider.eq(idx);
var inst = $slide.data('cmSlider');
if (inst != isUndefined) {
inst.me.update();
}
})(i);
}
};
Util.page.scriptLoaded(response).done(function () {
var dataCp = $targetLayer.attr('data-cp');
if ((dataCp != isUndefined) && win.cp.hasOwnProperty(dataCp)) {
win.cp[dataCp]($targetLayer);
}
Util.page.rerun({
type: 'flick',
target: $targetLayer
});
$targetLayer.on('layerOpenStart', function () {
sliderRefresh();
});
$targetLayer.on('layerCloseAfter', function () {
cmLayer.destroy();
$targetLayer.off('layerOpenBefore');
$targetLayer.off('layerCloseAfter');
var omniName = $targetLayer.find('[data-omni-cp]').attr('data-omni-cp');
$targetLayer.parent().find('style[data-name="' + omniName + '"]').remove();
$targetLayer.parent().find('link[data-name="' + omniName + '"]').remove();
$targetLayer.parent().find('script[data-name="' + omniName + '"]').remove();
// $targetLayer.parent().find('style[data-loader-style]').remove();
// $targetLayer.parent().find('script[data-loader-script]').remove();
$targetLayer.remove();
layerOpened = false;
});
awaitInstance.finish();
$targetLayer.trigger('openLayer');
deferred.resolve(cmLayer);
});
}
}).fail(function () {
awaitInstance.finish();
layerOpened = false;
win.alert('데이터를 불러오지 못했습니다.');
});
}
return deferred.promise();
}
return Component;
})();
return Component;
}));
(function (isUndefined) {
var win = window;
var induceStorageKey = 'uptomaxInduceClose';
var url = '/h/membership-promotion-layer';
var isLoaded = false;
var Component = function () {
if (isLoaded) return;
isLoaded = true;
var params = {};
params.url = url;
params.dataType = 'html';
eAjax.get(params).done(function (response) {
var $body = $('body');
var $response = $(response);
$body.append($response);
if(win.UIPage.isPc === 'Y') {
var $targetLayer = $response.find('.cm-layer.uptomax-induce-pop');
if ($targetLayer.length) {
new CmMainLayer($targetLayer, {
cookieName: induceStorageKey
});
}
} else {
var $targetLayer = $response.find('.cp-floating.uptomax-induce-pop');
if ($targetLayer.length) {
var dataCp = $targetLayer.attr('data-cp');
if ((dataCp != isUndefined) && win.cp.hasOwnProperty(dataCp)) {
win.cp[dataCp]($targetLayer, {
cookieName: induceStorageKey
});
}
}
}
});
};
win.membershipInduceLayerOpener = Component;
})();
const DisplayOrder = {
buyNow: function (e, params) {
DisplayOrder.addCart(e, params, DisplayOrder.gotoOrder);
},
addCart: function (e, params, callback) {
var deferred = $.Deferred();
// 1. 데이터 유효성 체크
if (DisplayOrder.checkCartData(e, params)) {
// 2. Request Parameter 셋팅
const cartItemCommandDtos = DisplayOrder.getCartItemCommandDtos(e,
params);
// 3. cornerId, pageId 셋팅
let defOpts = DisplayOrder.setCornerAndPage(e, cartItemCommandDtos);
// 4. API Call
var callCartApiDone = false;
var layerCloseDone = false;
var allDone = function () {
if (callCartApiDone && layerCloseDone) {
deferred.resolve();
}
};
$('.cp-detail-pop-putin').on("layerCloseAfter.callRegistCartApi", function () {
layerCloseDone = true;
$('.cp-detail-pop-putin').off("layerCloseAfter.callRegistCartApi");
allDone();
});
DisplayOrder.callRegistCartApi(e, defOpts,
(callback || DisplayOrder.openCartLayer)).done(function () {
callCartApiDone = true;
allDone();
});
} else {
deferred.resolve();
}
return deferred.promise();
},
checkCartData: function (e, params) {
// 영역 특정
const $t = $(e.currentTarget);
const $currentArea = $t.closest("div").parent();
// 유효성 체크
let result = true;
if($currentArea.find("[data-option-selectwrap] .final-list").children("li").size() < 1) {
alert("상품 옵션을 선택해 주세요.");
result = false;
}
if(params.cartType === 'gift') {
$currentArea.find("[data-option-selectwrap] .final-list").children("li").each(function () {
const $targetUitem = $(this);
const deliveryType = $targetUitem.data("deliverydata").text;
if(deliveryType === '매장수령') {
alert("선물하기 주문은 택배배송 상품만 가능합니다.");
result = false;
return false;
}
});
}
return result;
},
setCornerAndPage: function (e, cartItemCommandDtos) {
let defOpts = gUtil.def({
cartItemCommandDtos: cartItemCommandDtos
}, TuhoClient.getContributeInfo(e));
defOpts.cornerId = (defOpts.corner_id) ? defOpts.corner_id : '';
defOpts.pageId = (defOpts.page_id) ? defOpts.page_id : '';
return defOpts;
},
getCartItemCommandDtos: function (e, params) {
// 1. 장바구니 dto 생성
return DisplayOrder.getCartItem(e, params);
},
getCartItem: function (e, params) {
// 0. 영역 특정
const $t = $(e.currentTarget);
const $currentArea = $t.closest("div").parent();
// 1. 상품 정보 셋팅
const cartItemCommandDtos = [];
const itemTcode = params.itemTcode;
const countRepresentPriceY = params.countRepresentPriceY;
const setItemYn = itemTcode === '70' ? 'Y' : 'N';
const willCallShopCode = "";
if (params.itemTcode === "80" && params.countRepresentPriceY > 1) {
// 딜상품 최소구매수량, 세트 > 단품으로 변환
$currentArea.find("[data-option-selectwrap] .final-list").children("li").each(function () {
// 단품 단위 정보
const $targetUitem = $(this);
const ordQty = $targetUitem.find(".option-num .num").val();
const cartdata = ($targetUitem.data("cartdata"));
const mainData = DisplayOrder.getMainDataDealMin(cartdata, params);
const priceData = ($targetUitem.data("pricedata"));
const cartPrice = DisplayOrder.getPriceData(priceData, params);
const cartGroupDcode = DisplayOrder.getCartGroupDcode($targetUitem.data("deliverydata").text, params.cartType);
// GA 데이터 수집용
const selectedData = $targetUitem.data('selected-name');
const _selectedData = DisplayOrder.getSelectedData(selectedData);
// 세트 단품 정보
const compositionItems = [];
mainData.forEach((item, index) => {
const cartItemCommandDto= {
// 상품 기준
"cartGroupDcode": cartGroupDcode,
"cartDcode": params.cartDcode,
"willCallShopCode": willCallShopCode,
"setItemYn": setItemYn,
"setItemNo": '',
// 단품 블럭 기준
"ordQty": ordQty,
"cartPrice": cartPrice[index].sellprice,
// 세트랑 나머지 상품이 다른 부분
"itemNo": item.itemNo,
"cartUitemNo": item.cartUitemNo,
"lowerVendNo": item.lowerVendNo,
"sitemItemNo": item.sitemItemNo,
"sitemUitemNo": item.sitemUitemNo,
"sitemLowerVendNo": item.sitemLowerVendNo,
// 세트 구성상품
"compositionItems": compositionItems,
// GA 데이터 수집용
"itemName": _selectedData[index].item_name,
"brandName": _selectedData[index].brand_name,
"uitemName": _selectedData[index].uitem_name,
"sellprice": cartPrice[index].sellprice,
"selectedOptionInfos": (cartdata[index].selectedOptionInfos || [])
};
cartItemCommandDtos.push(cartItemCommandDto);
});
});
} else {
$currentArea.find("[data-option-selectwrap] .final-list").children("li").each(function () {
// 단품 단위 정보
const $targetUitem = $(this);
const ordQty = $targetUitem.find(".option-num .num").val();
const cartPrice = $targetUitem.data('unitprice');
const cartdata = (itemTcode === '80') ? ($targetUitem.data("cartdata")[0]) : ($targetUitem.data("cartdata"));
const mainData = DisplayOrder.getMainData(cartdata, params);
const cartGroupDcode = DisplayOrder.getCartGroupDcode($targetUitem.data("deliverydata").text, params.cartType);
// GA 데이터 수집용
let selectedData = {};
if(itemTcode === '70') {
let itemMainData = window.itemData.itemMain;
selectedData = {
item_name: itemMainData.itemName,
brand_name: itemMainData.brandName,
uitem_name: '옵션없음',
sellprice: itemMainData.sellprice
}
} else if(itemTcode === '80') {
selectedData = $targetUitem.data('selected-name')[0];
selectedData["sellprice"] = $targetUitem.data('pricedata')[0].sellPrice;
} else {
selectedData = $targetUitem.data('selected-name');
selectedData["sellprice"] = $targetUitem.data('pricedata').sellPrice;
}
// 세트 단품 정보
const compositionItems = (itemTcode === '70') ? DisplayOrder.getCartSetUitems(cartdata) : [];
// 주얼리 정보
const jwData = (mainData.isJewelry) ? DisplayOrder.getCartJwUitems($targetUitem, cartdata, cartGroupDcode) : {};
// 단품번호 주얼리 분기
const cartUitemNo = (mainData.isJewelry) ? jwData.ordMakeItemUitemNo : mainData.cartUitemNo;
const cartItemCommandDto = {
// 상품 기준
"cartGroupDcode": cartGroupDcode,
"cartDcode": params.cartDcode,
"willCallShopCode": willCallShopCode,
"setItemYn": setItemYn,
// "setItemNo": (itemTcode == '80' ? params.mainItemNo : ''),
"setItemNo": '',
// 단품 블럭 기준
"ordQty": ordQty,
"cartPrice": cartPrice,
// 주얼리 (단독, 딜만 가능)
"ordMakeItemYn": jwData.ordMakeItemYn,
"ordMakeItemUitemNo": jwData.ordMakeItemUitemNo,
"ordMakeItemUitemName": jwData.ordMakeItemUitemName,
"ordMakeItemOptionCon": jwData.ordMakeItemOptionCon,
"ordMakeUitemKey": jwData.ordMakeUitemKey,
// 세트랑 나머지 상품이 다른 부분
"itemNo": mainData.itemNo,
"cartUitemNo": cartUitemNo,
"lowerVendNo": mainData.lowerVendNo,
"sitemItemNo": mainData.sitemItemNo,
"sitemUitemNo": mainData.sitemUitemNo,
"sitemLowerVendNo": mainData.sitemLowerVendNo,
// 세트 구성상품
"compositionItems": compositionItems,
// GA 데이터 수집용
"itemName": selectedData.item_name,
"brandName": selectedData.brand_name,
"uitemName": selectedData.uitem_name,
"sellprice": selectedData.sellprice,
"selectedOptionInfos": (cartdata.selectedOptionInfos || [])
};
cartItemCommandDtos.push(cartItemCommandDto);
});
}
return cartItemCommandDtos;
},
getMainData: function (cartdata, params) {
if (params.itemTcode === "70") {
return {
itemNo: params.mainItemNo,
cartUitemNo: "",
lowerVendNo: params.mainLowerVendNo,
sitemItemNo: "",
sitemUitemNo: "",
sitemLowerVendNo: "",
isJewelry: cartdata.isJewelry,
}
}
return {
itemNo: cartdata.itemNo,
cartUitemNo: cartdata.cartUitemNo,
lowerVendNo: cartdata.lowerVendNo,
sitemItemNo: cartdata.sitemItemNo,
sitemUitemNo: cartdata.sitemUitemNo,
sitemLowerVendNo: cartdata.sitemLowerVendNo,
isJewelry: cartdata.isJewelry,
}
},
getMainDataDealMin: function (cartdata, params) {
const resultList = [];
cartdata.forEach((item, index) => {
const result = {
itemNo: item.itemNo,
cartUitemNo: item.cartUitemNo,
lowerVendNo: item.lowerVendNo,
sitemItemNo: item.sitemItemNo,
sitemUitemNo: item.sitemUitemNo,
sitemLowerVendNo: item.sitemLowerVendNo,
isJewelry: item.isJewelry
}
resultList.push(result);
});
return resultList;
},
getPriceData: function (priceData, param) {
const resultList = [];
priceData.forEach((item, index) => {
const result = {
sellprice: item.sellPrice,
dispItemPrice: item.dispItemPrice,
}
resultList.push(result);
});
return resultList;
},
getSelectedData: function (data) {
const resultList = [];
data.forEach((item, index) => {
const result = {
item_name: item.item_name,
brand_name: item.brand_name,
uitem_name: item.uitem_name,
}
resultList.push(result);
});
return resultList;
},
getCartJwUitems: function ($targetUitem, cartdata, cartGroupDcode) {
const jwdata = $targetUitem.data("jwdata");
const textdata = $targetUitem.data("textdata");
const classKey = DisplayOrder.getClassKey(jwdata, cartdata, textdata);
gUtil.def(jwdata.OptionCode, textdata);
const optionCon = gUtil.def({classKey: classKey}, jwdata);
const uitemKey = "L" + classKey + cartGroupDcode;
return {
ordMakeItemYn: "Y",
ordMakeItemUitemNo: cartdata.prodCode,
ordMakeItemUitemName: $targetUitem.find(".option-name").text(),
ordMakeItemOptionCon: JSON.stringify(optionCon),
ordMakeUitemKey: uitemKey
}
},
getClassKey: function (jwdata, cartdata, textdata) {
const itemNo = (cartdata.itemNo || '');
const optionCode = DisplayOrder.clearOptionCode(jwdata.OptionCode);
const flatOption = DisplayOrder.flattenObject(optionCode);
const asciiText = DisplayOrder.textToAscii(textdata);
const flatText = DisplayOrder.flattenObject(asciiText);
return itemNo+flatOption+flatText;
},
textToAscii: function (textdata) {
const textdataClone = Object.assign({}, textdata);
$.each(textdataClone, function (key, value) {
textdataClone[key] = DisplayOrder.toAscii(value);
});
return textdataClone;
},
toAscii: function (text) {
let r = '';
let n;
for(let i=0; i
0) {
$('#cartCnt').addClass('num');
$('#cartCnt').text(cartCnt);
}
}
});
},
getTotalPrice: function (item_dtl) {
let total_price = 0;
for (const item of item_dtl) {
if (item === undefined || item === null) {
continue;
}
const salePrice = item.sale_price;
const ordQty = item.ord_qty;
if (salePrice === undefined || salePrice === null || ordQty === undefined || ordQty === null) {
continue;
}
total_price += (salePrice * ordQty);
}
return total_price;
},
callGAFuncForAddCart: function (data) {
const itemData = window.itemData;
const itemMain = itemData.itemMain;
const navigation = itemData.navigation;
const item_dtl = data.cartItemCommandDtos.map((c, index) => (
{
item_name: (c.itemName || ''),
item_no: (c.itemNo || ''),
brand_name: (c.brandName || ''),
brand_no: (itemMain.brandNo || ''),
sale_price: (c.cartPrice || ''),
uitem_name: (c.uitemName || ''),
ord_qty: (c.ordQty || ''),
sellprice: (c.sellprice || ''),
selectedOptionInfos: (c.selectedOptionInfos || []),
cart_no: (data.cartNos[index] || '')
}
));
const total_price = this.getTotalPrice(item_dtl);
const ga_products = {
item_tcode: (itemMain.itemTcode || ''),
group_item_name: (itemMain.itemName || ''),
group_item_no: (itemMain.itemNo || ''),
group_sale_price: (itemMain.sellprice || ''),
img_path: (itemData.imageFullPath || ''),
disp_l_category: (((navigation['1'] || []).filter(c => c.selectYn === 'Y')[0] || {}).dispCategoryName || ''),
disp_m_category: (((navigation['2'] || []).filter(c => c.selectYn === 'Y')[0] || {}).dispCategoryName || ''),
disp_s_category: (((navigation['3'] || []).filter(c => c.selectYn === 'Y')[0] || {}).dispCategoryName || ''),
disp_l_category_no: (((navigation['1'] || []).filter(c => c.selectYn === 'Y')[0] || {}).dispCategoryNo || ''),
disp_m_category_no: (((navigation['2'] || []).filter(c => c.selectYn === 'Y')[0] || {}).dispCategoryNo || ''),
disp_s_category_no: (((navigation['3'] || []).filter(c => c.selectYn === 'Y')[0] || {}).dispCategoryNo || ''),
coupon_name: (itemMain.applyDoubleCpProm.promName || ''),
bundle_item_no: (itemMain.itemTcode === '70' ? itemMain.itemNo : ''),
item_dtl: item_dtl,
total_price: total_price
}
addToCart(ga_products);
},
gotoOrder: function (e, data) {
var orderNum = (function () {
var r = [];
if (typeof data == 'string') {
r = data;
} else {
data.forEach(function (d) {
r.push(d);
});
r = r.join(',');
}
return r;
})();
const vt = gUtil.validator;
//let pageId = window?.TuhoClient?.getPageId() || '';
let pageId = vt.store({
getScopeChaningEnd: function () {
return ['TuhoClient', 'getPageId']
},
}, '');
//let preCornerNo = $(e.currentTarget).closest('div.cm-component')?.data('cnr-no') || '';
let preCornerNo = vt.store({
condition: $(e.currentTarget).closest('div.cm-component').length,
get: function () {
return $(e.currentTarget).closest('div.cm-component').data('cnr-no');
},
}, '');
window.location.href = '/o/order?cartNos=' + orderNum + "&pageId=" + pageId + "&preCornerNo=" + preCornerNo;
},
openCartLayer: function () {
$('.cp-detail-pop-putin').trigger("openLayer");
},
closeOptionChangeLayer: function () {
$('.cm-layer.cp-basket-cart-pop').trigger('closeLayer');
}
};
window.AddCouponDownForCustomMsg = function (e) {
var $t = $(e.currentTarget);
var customSuccessMsg = $t.attr('data-success-msg');
var customFailMsg = $t.attr('data-fail-msg');
var startAlarmMsg = $t.attr('data-start-alarm-msg');
/**
* promNo 단건, 다건 모두 받음
*/
var promNo = $t.attr('data-prom-no');
var couponDone = function (prop) {
/**
* prop.resultCode
* 0000:발급 성공
* 0004:시작 전 쿠폰(발급 실패)
* 9998:부분 발급 : 단건의 경우 없는 케이스
* 그외(9999등):발급 실패
*/
let defaultMsg = prop.resultMessage;
if (prop.resultCode == '0000') {
alert(customSuccessMsg ? customSuccessMsg : defaultMsg);
} else if (prop.resultCode == '0004') {
alert(startAlarmMsg ? startAlarmMsg : defaultMsg);
} else if (prop.resultCode == '9998') {
alert(defaultMsg);
} else {
alert(customFailMsg ? customFailMsg : defaultMsg);
}
};
var couponApi = function (val, $target) {
eAjax.post({
dataType: 'json',
url: '/api/coupon/regcpn-down',
contentType: "application/json",
data: JSON.stringify({promNo: val})
}).done(function (response) {
if (response.resultCode == '200') {
couponDone(response.data);
if(response.data.promNo && response.data.promNo.length > 0) {
DownloadCoupon((response.data.promNo||''), (response.data.promName||''));
}
} else {
alert(response.resultMessage);
}
$target.trigger('coupondown.done', response);
});
};
couponApi(promNo, $t);
};
window.AddCouponDown = function (e) {
window.AddCouponDownForCustomMsg(e);
};
const Order = {
OptionChange : {
getLayerData : function (e) {
var layerData = $(e.currentTarget).data('optionchange_layer');
return typeof layerData == 'string' ? JSON.parse(layerData) : layerData;
},
validateLayerData : function (layerData) {
if(layerData.type !== 'wish' && layerData.type !== 'recent') {
if (!layerData.delivery) {
alert('배송정보가 없습니다.');
return false;
}
}
return true;
},
setLayerArgs : function (layerData) {
return {
target: '.cm-layer.cp-basket-cart-pop',
params: {
data: layerData
}
}
},
initLayerData : function (layerData) {
$('#selectedOption').text(layerData.optionName);
$('.cm-layer.cp-basket-cart-pop').data('layerData', layerData);
},
initItemDetail : function () {
var INSTANCE = $('.cm-layer.cp-basket-cart-pop').data('itemDetail');
INSTANCE.$$changecomplete = null;
INSTANCE.opts.on['selected'] = function () {
INSTANCE.$$changecomplete = true;
}
INSTANCE.opts.on['selectedBefore'] = function () {
var PRODUCT = INSTANCE.product;
if(INSTANCE.$$changecomplete != null) {
INSTANCE.$$changecomplete = null;
PRODUCT[PRODUCT.state].prices.selectDatas = [];
INSTANCE.$selectOptionWrap.empty().hide();
PRODUCT[PRODUCT.state].prices.initialize();
}
};
}
}
};
// 옵션변경레이어
(function (isUndefined) {
$(function () {
const oc = Order.OptionChange;
// 레이어 오픈 이벤트
$(document).on('click', '[data-optionchange_layer]', function (e) {
e.preventDefault();
const layerData = oc.getLayerData(e);
if(!oc.validateLayerData(layerData)) return;
const uri = '/m/option-change-layer?itemNo='+layerData.itemNo;
let url = uri;
try {
let dispMallUrl = getDispMallUrl(layerData.dispMallNo);
console.log("dispMallNo", layerData.dispMallNo);
console.log("dispMallUrl", dispMallUrl);
url = (dispMallUrl ? dispMallUrl : "") + uri;
itemApis.prefix.uitemApi = dispMallUrl + itemUris.uitemApi;
} catch (error) {
// ignore
console.log("error", error);
console.log("layerData",layerData);
}
const args = oc.setLayerArgs(layerData);
OptionChangeOpener(url, args)
.done(function () {
oc.initLayerData(layerData);
if(layerData.type !== 'wish' && layerData.type !== 'recent') {
oc.initItemDetail();
}
});
});
// 장바구니 옵션 변경 이벤트
$(document).on('click', '.cm-layer.cp-basket-cart-pop [data-cart-option-change-action]', function (e) {
e.preventDefault();
var $t = $(e.currentTarget);
var $layer = $('.cm-layer.cp-basket-cart-pop');
var layerData = $layer.data('layerData');
var cartNo = layerData.cartNo;
var compositionCartNo = layerData.compositionCartNo;
var $optionList = $layer.find('[data-option-selectwrap] .final-list');
var $optionChild = $optionList.find('[data-priceitem]').eq(0);
var optionCartData = $optionChild.data('cartdata');
if (optionCartData === isUndefined) return;
var itemTcode = $t.data('item-tcode');
var data = {};
var cartItemCommandDtos = [];
var totalPrice = $optionChild.data('unitprice');
if(itemTcode == '70') {
compositionCartNo.forEach(function (d, idx) {
var p = gUtil.def({}, optionCartData[idx]);
p.cartNo = d;
cartItemCommandDtos[idx] = p;
});
data = {
"cartItemCommandDtos": cartItemCommandDtos,
"setItemPrice": totalPrice
};
} else {
optionCartData.cartNo = cartNo;
optionCartData.cartPrice = totalPrice;
cartItemCommandDtos.push(optionCartData);
data = {
"cartItemCommandDtos": cartItemCommandDtos
};
}
// API Call
eAjax.get({
type: 'PUT',
dataType: 'json',
contentType: 'application/json',
url: '/v1/cart/option',
data: JSON.stringify(data)
}).done(function (response) {
if(response.resultCode === '200') {
alert("변경되었습니다.");
location.reload();
} else {
alert("실패하였습니다.");
}
}).fail(function () {
alert("실패하였습니다.");
});
});
// 주문 옵션 변경 이벤트
$(document).on('click', '.cm-layer.cp-basket-cart-pop [data-order-option-change-action]', function (e) {
e.preventDefault();
var $t = $(e.currentTarget);
var $layer = $('.cm-layer.cp-basket-cart-pop');
var layerData = $layer.data('layerData');
var afterComplete = layerData.afterComplete;
var giftOrdDetailNo = layerData.giftOrdDetailNo;
var $optionList = $layer.find('[data-option-selectwrap] .final-list');
var $optionChild = $optionList.find('[data-priceitem]').eq(0);
var optionCartData = $optionChild.data('cartdata');
if (optionCartData === isUndefined) return;
var itemTcode = $t.data('item-tcode');
var data = {};
var curItems = [];
var exchangeItems = [];
var curItem = {
ordDetailNo: layerData.ordDetailNo
}
curItems.push(curItem);
var item = {
ordDetailNo: layerData.ordDetailNo,
itemNo: layerData.itemNo,
uitemNo: (itemTcode == '70') ? '00000' : optionCartData.cartUitemNo
}
exchangeItems.push(item);
// 세트상품의 구성상품
if(itemTcode == '70') {
$.each(optionCartData, function(index, value) {
var curItem = {
ordDetailNo: layerData.compositionOrdDetailNos[index]
}
curItems.push(curItem);
var item = {
ordDetailNo: layerData.compositionOrdDetailNos[index],
itemNo: value.itemNo,
uitemNo: value.cartUitemNo
}
exchangeItems.push(item);
});
}
// 사은품
if(giftOrdDetailNo) {
var curGiftItem = {
ordDetailNo: giftOrdDetailNo
}
curItems.push(curGiftItem);
var giftItem = {
ordDetailNo: giftOrdDetailNo,
itemNo: optionCartData.sitemItemNo,
uitemNo: optionCartData.sitemUitemNo
}
exchangeItems.push(giftItem);
}
data = {
ordNo: layerData.ordNo,
items: curItems,
exchangeItems: exchangeItems,
stringData: [{
optionName: $optionChild.find('.option-name').html()
}]
};
if(afterComplete === 'reload') {
// API Call
eAjax.get({
type: 'POST',
dataType: 'json',
contentType: 'application/json',
url: '/x/o/claim/uitem-proc',
data: JSON.stringify(data)
}).done(function (response) {
if(response.resultCode === '200') {
alert("변경되었습니다.");
location.reload();
} else {
alert(response.resultMessage);
}
}).fail(function () {
alert("실패하였습니다.");
});
} else if(afterComplete === 'callback') {
if (window.hasOwnProperty('optionChangeComplete')) {
window.optionChangeComplete(gUtil.def({}, data));
$t.trigger('closeLayer');
}
}
});
});
})();
// 찜하기
(function (isUndefined) {
$(function () {
$(document).on('click', '[data-select-promise]', function (e) {
e.preventDefault();
if(!isLogin()) return;
var $t = $(e.currentTarget);
var condition = $t.hasClass('active');
var selectData = $t.data('select-promise');
//마케팅스크립트 파라미터
var itemNo = selectData.item_no;
var sellPrice = selectData.sell_price;
var salePrice = selectData.sale_price;
var itemName = selectData.item_name;
var imagePath = selectData.image_path;
var brandName = selectData.brand_name;
var dispMallNo = selectData.item_dispmallno;
var brandNo = selectData.brand_no;
var itemTcode = selectData.item_tcode;
if(salePrice == undefined || salePrice == ''){
salePrice = sellPrice;
}
const paramData = getWishParam(dispMallNo, itemNo, brandNo);
if (!condition) {
eAjax.get({
url: '/v1/member/wishitem-regist/api',
data: paramData,
async: false
}).done(function (response) {
if(response.resultCode == '200') {
$t.data('select-promise').contents_id = '8';
$t.addClass('active');
//if(window.UIPage.isApp === 'Y') {
// Flutter.addToWishlist(itemNo, sellPrice, 1);
//}
//20230223 마케팅스크립트 공통화 함수로 변경
var wish_obj = {
item_no: itemNo,
sale_price: salePrice,
sell_price: sellPrice,
qty: '1',
itemName: itemName,
imagePath: imagePath,
brandName: brandName,
brandNo: brandNo,
item_tcode: itemTcode
}
wishClick(wish_obj);
} else if(response.resultCode == '500') {
$t.data('select-promise').contents_id = '9';
$t.addClass('active');
} else {
$t.data('select-promise').contents_id = '100';
}
openWishLayer({
'contents_id': $t.data('select-promise').contents_id
});
});
} else {
eAjax.get({
url: '/v1/member/wishitem-delete/api',
data: paramData,
async: false
}).done(function (response) {
if(response.resultCode == '200') {
$t.data('select-promise').contents_id = '10';
$t.removeClass('active');
} else {
$t.data('select-promise').contents_id = '101';
}
openWishLayer({
'contents_id': $t.data('select-promise').contents_id
});
});
}
});
function openWishLayer(props) {
var $layer = $('.cm-layer.cp-pop-wish');
var opts = gUtil.def({
'title_id': 'default',
'contents_id': '1'
}, props);
var $titles = $layer.find('[data-title_id]');
var $activeTitle = $layer.find('[data-title_id="' + opts['title_id'] + '"]');
var $contents = $layer.find('[data-contents_id]');
var $activeContent = $layer.find('[data-contents_id="' + opts['contents_id'] + '"]');
$titles.not($activeTitle).hide();
$activeTitle.css('display', '');
$contents.not($activeContent).hide();
$activeContent.css('display', '');
$layer.trigger('openLayer');
}
});
})();
// 브랜드전시몰 찜하기(로고 옆 찜하기 버튼)
(function (isUndefined) {
$(function () {
async function add() {
return new Promise((resolve, reject) => {
eAjax.post({
url: '/v1/member/wish/mall/api',
method: "POST",
dataType: "json",
}).done(function (response) {
resolve(response);
}).fail(function (response) {
reject(response);
});
});
}
async function remove() {
return new Promise((resolve, reject) => {
eAjax.get({
url: '/v1/member/wish/mall/api',
method: "DELETE",
dataType: "json",
}).done(function (response) {
resolve(response);
}).fail(function (response) {
reject(response);
});
});
}
function calculateWishCount(count) {
try {
let $wishCount = $('[data-brand-mall-wish-count]');
let wishCount;
if ($wishCount) {
$wishCount = $wishCount.eq(0);
wishCount = Number($wishCount.text());
if (isNaN(wishCount) || wishCount <= 0) {
// nothing
} else {
$wishCount.text(wishCount + Number(count));
}
}
} catch (error) {
console.log("calculateWishCount", error);
}
}
let calling = false;
window.BrandMallWish = async function(e) {
var $t = $(e.currentTarget);
var isWish = $t.hasClass('active');
if(calling) {
alert("처리 중 입니다.");
return;
} else {
calling = true;
try {
if(isWish) {
// 찜삭제
const response = await remove();
if(response.resultCode == '200') {
$('[data-brand-mall-wish]').removeClass('active');
calculateWishCount(-1);
} else {
console.log("remove error");
}
} else {
// 찜등록
const response = await add();
if(response.resultCode == '200') {
$('[data-brand-mall-wish]').addClass('active');
calculateWishCount(1);
brandWishClick(window.UIPage.dispMallName);
} else {
console.log("add error");
}
}
} catch (response) {
throw response;
} finally {
calling = false;
return true;
}
}
}
window.BrandMallWishAndReload = async function(e) {
var result = await window.BrandMallWish(e);
if(result) {
location.reload();
}
}
});
})();
// 리뷰 (신고/차단/추천)
(function (isUndefined) {
$(function () {
var loginState;
$(document).on('click', '[data-review-body] .box-recom .btn_underline', function (e) {
loginState = window.isLogin();
});
window.ReportLogicFunc = function (e) {
if (loginState) {
if(confirm('해당 리뷰를 신고/차단하시겠습니까?')) {
var $t = $(e.currentTarget);
var $reviewEl = $t.closest('[data-review-data]');
var data = $reviewEl.data('review-data');
eAjax.get({
type: 'PUT',
url: '/api/i/items/reviews/' + data.reviewNo + '/block'
}).done(function (response) {
alert('해당 리뷰가 신고/차단되었습니다.');
window.location.reload(true);
});
}
} else {
window.location.reload(true);
}
};
window.RecommendLogicFunc = function (e) {
var $t = $(e.currentTarget);
var $reviewEl = $t.closest('[data-review-data]');
var data = $reviewEl.data('review-data');
var num = Number($t.find('.num').text());
num = isNaN(num) ? 0 : num;
eAjax.get({
type: 'PUT',
url: '/api/i/items/reviews/' + data.reviewNo + '/myRecommend'
}).done(function (response) {
var setRecommendData = {
reviewNo: data.reviewNo,
data: response.data,
};
if(response.data === 'Y') {
$t.addClass('active');
$t.find('.num').text(num+1);
setRecommendData.num = num + 1;
} else if(response.data === 'N') {
$t.removeClass('active');
$t.find('.num').text(num-1);
setRecommendData.num = num - 1;
}
var $PhotoReviewPopLayer = $('#PhotoReviewPopLayer');
var PhotoReviewInstance = null;
if ($PhotoReviewPopLayer.length && $PhotoReviewPopLayer[0].motion != isUndefined) {
PhotoReviewInstance = $PhotoReviewPopLayer[0].motion;
}
if (PhotoReviewInstance != null && PhotoReviewInstance.recommendUpdate != isUndefined) {
PhotoReviewInstance.recommendUpdate(setRecommendData);
}
var $DetailReviewPanel = $('#detailIntroPanel2');
var DetailReviewInstance = null;
if ($DetailReviewPanel.length && $DetailReviewPanel[0].motion != isUndefined) {
DetailReviewInstance = $DetailReviewPanel[0].motion;
}
if (DetailReviewInstance != null && DetailReviewInstance.recommendUpdate != isUndefined) {
DetailReviewInstance.recommendUpdate(setRecommendData);
}
var $DetailInfoPanel = $('.cp-detail-info[data-cp="DetailInfo"]');
var DetailInfoInstance = null;
if ($DetailInfoPanel.length && $DetailInfoPanel[0].motion != isUndefined) {
DetailInfoInstance = $DetailInfoPanel[0].motion;
}
if (DetailInfoInstance != null && DetailInfoInstance.recommendUpdate != isUndefined) {
DetailInfoInstance.recommendUpdate(setRecommendData);
}
});
};
});
})();
// 배송지 등록/수정 layer
(function (isUndefined) {
$(function () {
$(document).on('click', '[data-addrreg_layer]', function(e) {
e.preventDefault();
var $t = $(e.currentTarget);
var addrregData = $t.data('addrreg_layer');
layerAsyncOpener("/m/addr-reg-layer?customerShipdistSn=" + addrregData.customerShipdistSn, {
target: '.cp-popup-register'
}).done(function () {
$('.cm-layer.cp-popup-register').data('addrregData', addrregData);
});
});
});
})();
// 배송지 변경 layer
(function (isUndefined) {
$(function () {
$(document).on('click', '[data-addrchange_layer]', function(e) {
e.preventDefault();
var $t = $(e.currentTarget);
var addrchangeData = $t.data('addrchange_layer');
layerAsyncOpener("/m/addr-change-layer?ordNo=" + addrchangeData.ordNo + "&ordDetailNo=" + addrchangeData.ordDetailNo, {
target: '.cp-popup-register'
}).done(function (instance) {
$('.cm-layer.cp-popup-register').data('addrchangeData', addrchangeData);
});
});
});
})();
// 배송지 목록 layer
(function (isUndefined) {
$(function () {
$(document).on('click', '[data-addrlist_layer]', function(e) {
e.preventDefault();
var $t = $(e.currentTarget);
var addrlistData = $t.data('addrlist_layer');
layerOpener("/m/addr-list-layer", {
target: '.cp-mypage-pop-address'
}).done(function () {
$('.cm-layer.cp-mypage-pop-address').data('addrlistData', addrlistData);
});
});
});
})();
// 주문배송현황 layer
(function (isUndefined) {
$(function () {
$(document).on('click', '[data-shipstate_layer]', function(e) {
e.preventDefault();
var $t = $(e.currentTarget);
var shiplistLayer = $t.data('shipstate_layer');
var ordNo = shiplistLayer.hasOwnProperty('ordNo') ? shiplistLayer.ordNo : '';
var ordDetailNo = shiplistLayer.hasOwnProperty('ordDetailNo') ? shiplistLayer.ordDetailNo : '';
layerAsyncOpener("/m/delistat-layer?ordNo="+ ordNo + "&ordDetailNo=" + ordDetailNo, {
target: '.cp-mypage-delivery-status'
}).done(function () {
$('.cm-layer.cp-mypage-delivery-status').data('delistatData', shiplistLayer);
});
});
});
})();
// 상품기능 레이어
(function (isUndefined) {
$(function () {
$(document).on('click', '[data-item_layer]', function (e) {
e.preventDefault();
var $t = $(e.currentTarget);
var queryStr = $t.data('query-str');
var $parentCnrNo = $t.closest('[data-cnr-no]');
if ($parentCnrNo.length) {
queryStr = queryStr + '&parentCnrNo=' + $parentCnrNo.data('cnr-no');
}
ItemLayerOpener('/i/item-layer?' + queryStr, {
target: '.cm-layer.cp-prd-pop'
}).done(function () {
});
});
});
})();
// 주문상품검색 레이어
(function (isUndefined) {
$(function () {
$("[data-order-item-layer]").click(function(e){
e.preventDefault();
let $btn = $(e.currentTarget);
let addData = $btn.data('order-item-layer');
layerAsyncOpener("/m/order-item-layer", {
target: '.cp-cs-counsel-pop'
}).done(function () {
$('.cm-layer.cp-cs-counsel-pop').data('addData', addData);
});
});
});
})();
// 장바구니 레이어
(function (isUndefined) {
$(function () {
$("[data-cart-layer]").click(function(e){
e.preventDefault();
let $btn = $(e.currentTarget);
let addData = $btn.data('cart-layer');
layerAsyncOpener("/m/cart-layer", {
target: '.cp-cs-counsel-pop'
}).done(function () {
$('.cm-layer.cp-cs-counsel-pop').data('addData', addData);
});
});
});
})();
// 찜 레이어
(function (isUndefined) {
$(function () {
$("[data-wish-layer]").click(function(e){
e.preventDefault();
let $btn = $(e.currentTarget);
let addData = $btn.data('wish-layer');
layerAsyncOpener("/m/wish-layer", {
target: '.cp-cs-counsel-pop'
}).done(function () {
$('.cm-layer.cp-cs-counsel-pop').data('addData', addData);
});
});
});
})();
// 앱 설정 레이어
(function (isUndefined) {
$(function () {
$("[data-pushset-layer]").click(function(e){
e.preventDefault();
let $btn = $(e.currentTarget);
layerAsyncOpener("/m/pushset-layer", {
target: '.cn-setting'
}).done(function () {
});
});
});
})();
// 자동완성 값 초기화
(function (isUndefined) {
$(function () {
let $autocompleteOff = $("[data-autocomplete-off]");
$autocompleteOff.val("");
if($autocompleteOff.length > 0) {
let html = [];
html.push(' ');
html.push(' ');
$("body").prepend(html.join(''));
}
});
})();
// 상품문의 레이어
(function (isUndefined) {
$(function () {
$("[data-qna-layer]").click(function(e){
e.preventDefault();
let $btn = $(e.currentTarget);
let addData = $btn.data('qna-layer');
layerAsyncOpener("/m/qna-layer?counselNo=" + addData.counselNo, {
target: '.cp-pop-qna-write'
}).done(function () {
$('.cm-layer.cp-pop-qna-write').data('addData', addData);
});
});
});
})();
// 장바구니 등록 버튼
(function (isUndefined) {
$(function () {
$(document).on('click', '[data-add-cart-btn]', function(e) {
e.preventDefault();
// 상품정보 셋팅
const $t = $(e.currentTarget);
const itemMain = $t.data('item');
const callback = $t.data('callback');
const callbackFunc = DisplayOrder[callback];
const params = {
mainItemNo: itemMain.itemNo,
mainLowerVendNo: itemMain.lowerVendNo,
cartDcode: '10',
itemTcode: itemMain.itemTcode,
ordMakeItemYn: itemMain.ordMakeItemYn,
jwYn: itemMain.jwYn,
cartType: itemMain.cartType,
countRepresentPriceY: itemMain.countRepresentPriceY
}
// 장바구니 저장
if ($t.data('clicking') == isUndefined) {
$t.data('clicking', 'true');
DisplayOrder.addCart(e, params, callbackFunc).done(function () {
$t.removeData('clicking');
});
}
});
});
})();
window.chatBotOpen = function(e) {
if(window.UIPage.isLogin != "Y") {
setTimeout(function() { window.location.reload(); }, 100);
}
eAjax.get({
type: "POST",
url: "/v1/health/chatbot",
}).done(function (response) {
if(response.resultCode == "200") {
let name = "이랜드몰 고객센터";
let properties = "width=420,height=750,resizable=yes,toolbar=no,menubar=no,location=no,scrollbars=yes,status=yes,channelmode=no";
let url = window.UIPage.server.chatbot + "/sharedfront/jsp/view/sso.jsp?mbrNo=" + btoa(response.data.mbrNo) + "&dispMallNo=" + btoa(response.data.dispMallNo);
window.open(url, name, properties);
} else {
alert(response.resultMessage);
}
});
}
// window 바인드 함수
window.AddReinLayerOpen = function (e) {
const $t = $(e.currentTarget);
const itemNo = $t.data("item_no");
const lowerVendNo = $t.data("lowervend_no");
DisplayItem.openReinAlarmLayer(e, itemNo, lowerVendNo);
};
window.AddOrder = function (e) {
// 상품정보 셋팅
const $t = $(e.currentTarget);
const itemMain = $t.data('item');
const params = {
mainItemNo: itemMain.itemNo,
mainLowerVendNo: itemMain.lowerVendNo,
cartDcode: '20',
itemTcode: itemMain.itemTcode,
ordMakeItemYn: itemMain.ordMakeItemYn,
jwYn: itemMain.jwYn,
cartType: itemMain.cartType,
countRepresentPriceY: itemMain.countRepresentPriceY
}
// 바로구매
DisplayOrder.buyNow(e, params);
};
(function() {
window.getWishParam = function(dispMallNo, itemNo, brandNo) {
if(itemNo) {
return getItemWishParam(dispMallNo, itemNo);
} else {
return getBrandWishParam(dispMallNo, brandNo);
}
}
window.getItemWishParam = function(dispMallNo, itemNo) {
return {
dispMallNo : dispMallNo
, wishlistDcode : 10
, wishlistDetailNo1 : itemNo
};
}
window.getBrandWishParam = function(dispMallNo, brandNo) {
return {
dispMallNo : dispMallNo
, wishlistDcode : 20
, wishlistDetailNo1 : brandNo
};
}
})();
window.ToggleWish = function (e) {
//e.preventDefault();
var $t = $(e.currentTarget);
var condition = $t.hasClass('active');
var itemNo = $t.data('item-no') ? $t.data('item-no').toString() : '';
var sellPrice = $t.data('sellprice') ? $t.data('sellprice').toString() : '';
var salePrice = $t.data('saleprice') ? $t.data('saleprice').toString() : sellPrice; //최대할인가가 없으면 sellprice
var itemName = $t.data('item-name');
var imagePath = $t.data('image-path');
var brandName = $t.data('brand-name') || '';
var dispMallNo = $t.data('item-dispmallno'); //기여몰 정보
var brandNo = $t.data('brand-no') || ''; //브랜드번호
var tooltipClassName = $t.data('tooltip-toggle'); //브랜드찜 툴팁 클래스명
const itemTcode = $t.data('item-tcode') || '';
const paramData = getWishParam(dispMallNo, itemNo, brandNo)
if (!condition) {
eAjax.get({
url: '/v1/member/wishitem-regist/api',
data: paramData
}).done(function (response) {
if(response.resultCode == '200') {
if(tooltipClassName) {$('.'+tooltipClassName).hide();}
$t.addClass('active');
$t.trigger('wishToggleRender');
if (itemNo || itemNo.length > 0) {
var wish_obj = {
item_no: itemNo,
sell_price: sellPrice,
sale_price: salePrice,
qty: '1',
itemName: itemName,
imagePath: imagePath,
brandName: brandName,
brandNo: brandNo,
item_tcode: itemTcode
}
wishClick(wish_obj); // 상품찜
} else if (brandName || brandName.length > 0) {
brandWishClick(brandName); // 브랜드찜
}
} else if(response.resultCode == '500') {
$t.addClass('active');
$t.trigger('wishToggleRender');
} else {
alert(response.resultMessage);
}
});
} else {
eAjax.get({
url: '/v1/member/wishitem-delete/api',
data: paramData
}).done(function (response) {
if(response.resultCode == '200') {
if(tooltipClassName) {$('.'+tooltipClassName).show();}
$t.removeClass('active');
$t.trigger('wishToggleRender');
} else {
alert(response.resultMessage);
}
});
}
};
const DisplayItem = {
openReinAlarmLayer: function(e, itemNo, lowerVendNo) {
const $t = $(e.currentTarget);
const $layer = ($t.closest('.cm-layer.cp-prd-pop').length)
? $("[data-item-innerlayer] .cp-detail-pop-restock")
: $("[data-omni-cp='itemDetail'],[data-omni-cp='wishList']").find(".cp-detail-pop-restock");
DisplayMember.getLoginMember($layer);
DisplayItem.getReinUitems(itemNo, lowerVendNo, $layer);
},
getReinUitems: function(itemNo, lowerVendNo, $layer) {
const url = "/v1/item/uitemName/api";
const dataType = "json";
const contentType = "application/json";
const data = {
"itemNo": itemNo,
"lowerVendNo": lowerVendNo,
"reWhsinNotificPossYn": "Y"
};
eAjax.get({
url : url,
dataType : dataType,
contentType : contentType,
data : data
}).done(function (response) {
if(response.resultCode === '200') {
const options = DisplayItem.makeUitemOptions(response, itemNo);
$layer.find("#opt_col").html(options);
$layer.trigger("openLayer");
} else {
alert("실패하였습니다.");
}
});
},
makeUitemOptions: function(json, itemNo) {
const layouts = [];
layouts.push('옵션을 선택해 주세요. ');
$.each(json.data.uitem, function (index, value) {
layouts.push(''+value.uitemName+' ');
});
return layouts.join('');
}
}
const DisplayMember = {
getLoginMember: function($layer) {
const url = "/v1/member/api";
const dataType = "json";
const contentType = "application/json";
const data = {};
eAjax.get({
url : url,
dataType : dataType,
contentType : contentType,
data : data
}).done(function (response) {
if(response) {
if((response.resultCode === '200') && (response.hasOwnProperty('data'))) {
const cellPhoneNo = response.data.fullCellphoneMasking;
$layer.find(".reg_num em, .num_box strong").text(cellPhoneNo);
}
}
});
}
}
window.unEscapeHtml = function (htmlStr) {
return htmlStr.replace(/</g , "<")
.replace(/>/g , ">")
.replace(/"/g , "\"")
.replace(/'/g , "\'")
.replace(/&/g , "&");
}
// SHA256 암호화
const SHA256 = function (s){
var chrsz = 8;
var hexcase = 0;
safe_add = function (x, y) {
var lsw = (x & 0xFFFF) + (y & 0xFFFF);
var msw = (x >> 16) + (y >> 16) + (lsw >> 16);
return (msw << 16) | (lsw & 0xFFFF);
}
S = function (X, n) { return ( X >>> n ) | (X << (32 - n)); }
R = function (X, n) { return ( X >>> n ); }
Ch = function (x, y, z) { return ((x & y) ^ ((~x) & z)); }
Maj = function (x, y, z) { return ((x & y) ^ (x & z) ^ (y & z)); }
Sigma0256 = function (x) { return (S(x, 2) ^ S(x, 13) ^ S(x, 22)); }
Sigma1256 = function (x) { return (S(x, 6) ^ S(x, 11) ^ S(x, 25)); }
Gamma0256 = function (x) { return (S(x, 7) ^ S(x, 18) ^ R(x, 3)); }
Gamma1256 = function (x) { return (S(x, 17) ^ S(x, 19) ^ R(x, 10)); }
core_sha256 = function (m, l) {
var K = new Array(0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5, 0x3956C25B, 0x59F111F1,
0x923F82A4, 0xAB1C5ED5, 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,
0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174, 0xE49B69C1, 0xEFBE4786,
0xFC19DC6, 0x240CA1CC, 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,
0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7, 0xC6E00BF3, 0xD5A79147,
0x6CA6351, 0x14292967, 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,
0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85, 0xA2BFE8A1, 0xA81A664B,
0xC24B8B70, 0xC76C51A3, 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,
0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5, 0x391C0CB3, 0x4ED8AA4A,
0x5B9CCA4F, 0x682E6FF3, 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,
0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2);
var HASH = new Array(0x6A09E667, 0xBB67AE85, 0x3C6EF372, 0xA54FF53A, 0x510E527F, 0x9B05688C, 0x1F83D9AB, 0x5BE0CD19);
var W = new Array(64);
var a, b, c, d, e, f, g, h, i, j;
var T1, T2;
m[l >> 5] |= 0x80 << (24 - l % 32);
m[((l + 64 >> 9) << 4) + 15] = l;
for ( var i = 0; i>5] |= (str.charCodeAt(i / chrsz) & mask) << (24 - i%32);
}
return bin;
}
Utf8Encode = function (string) {
string = string.replace(/\r\n/g,"\n");
var utftext = "";
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
binb2hex = function (binarray) {
var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef";
var str = "";
for(var i = 0; i < binarray.length * 4; i++) {
str += hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8+4)) & 0xF) +
hex_tab.charAt((binarray[i>>2] >> ((3 - i%4)*8 )) & 0xF);
}
return str;
}
s = Utf8Encode(s);
return binb2hex(core_sha256(str2binb(s), s.length * chrsz));
}
/* ***********************************************************************
location을 통한(ex: location.href) 페이지 이동 시,
현재 url 파라미터에 MediaDCode(PC/MO/APP)가 존재한다면,
이동 url에 MediaDCode 파라미터 추가
************************************************************************** */
window.getUrlWithMediaDcode = function (url) {
try{
/** 현재 페이지 파라미터별 케이스 확인
* 1. 파라미터가 없을 경우
* 2. 파라미터가 있으나, mediaDcode 파라미터가 없을 경우
* 3. mediaDcode 파라미터가 있으나, 값이 없을 경우
* 4. mediaDcode 파라미터 값이 있을 경우
*/
let curParam = location.search;
/** 케이스 1번 */
if (curParam.length == 0) {
return url;
}
curParam = curParam.substring(1, curParam.length); /** ?구분자 삭제 */
let paramArray = curParam.split("&"); /** 파라미터 분리 */
let paramMap = [];
for (let idx = 0; idx < paramArray.length; idx++) {
let paramInfo = paramArray[idx].split("=");
paramMap[paramInfo[0]] = paramInfo[1];
}
/** 케이스 2,3번 */
if (paramMap['mediaDcode'] == undefined || paramMap['mediaDcode']=="") {
return url;
}
/** 케이스 4번
* - 설정 환경 화면으로 출력되도록 반환 url + mediaDcode 추가
* - url 파라미터 케이스별 오류 확인
* 1. 파라미터 존재시에 +?(&)파라미터 일 경우 오류 O
* a. 파라미터 구분자 ?가 연속적으로 두개 이상일 경우엔 오류 X
* 2. 파라미터 구분자 ?다음에 &+파라미터 되어도 오류 X
* 3. 파라미터 구분자 ?가 연속 두개 이상일 때, & 없이 +파라미터 될 때 오류 O
* 4. 파라미터 구분자 ? 없이 +&일 경우 오류 O
* 5. 파라미터 존재시에, / 다음에 &파라미터 추가하여도 오류 X
* 6. 파라미터 없을 때, /다음 ? 또는 & 추가시 오류 O
*/
let convertedUrl = url;
if (!url.includes("?")) {
if (url.slice(-1) == "/") { /** 케이스 4-6번 : ?구분자 존재 하지 않고, 맨 끝이 /일때 삭제 */
convertedUrl = url.substring(0,url.length-1);
}
convertedUrl += "?"; /** 케이스 4-(1,3,4)번 : ? 및 파라미터 존재 하지 않을 때, ? 추가 */
}
return convertedUrl + "&mediaDcode=" + paramMap["mediaDcode"];
}
catch (error) {
console.log("getUrlWithMediaDcode Failed");
console.log("Error",error);
}
return url;
}
/***************************************/
const PageCallback = {
openAppSettingLayer: function () {
// 앱설정 레이어 오픈
layerAsyncOpener("/m/pushset-layer", {
target: '.cn-setting'
});
},
agreeAppPushAndOpenPushsetLayer : function (referrerId) {
if(!referrerId) {
const params = new URLSearchParams(document.location.search);
referrerId = (params.get('referrer_id')||'');
}
if(TuhoClient) {
var props = {}
props['Page_id'] = TuhoClient.getPageId();
props['data-cttn'] = "pb_" + referrerId + "_0";
props['data-cnr-no'] = '';
props['adhoc_yn'] = 'Y';
TuhoClient.sendLogToTopic("reacting", props)
}
if(isLogin()) {
const custId = window.UIPage.custId;
if (custId && custId.length > 0) {
// 앱 수신 동의 함수 호출
Flutter.pushAgreeForEvent(custId, this.openAppSettingLayer);
} else {
location.reload();
}
} else {
$('#loginLayerOpener').trigger('click');
}
},
openPushsetLayer : function () {
if(isLogin()) {
const custId = window.UIPage.custId;
if (custId && custId.length > 0) {
this.openAppSettingLayer();
} else {
location.reload();
}
} else {
$('#loginLayerOpener').trigger('click');
}
}
}
window.gotoAppByDeeplink = function (e, data) {
if(data && data.userId) {
window.UIPage.loginId = data.userId;
}
const $t = $((e.currentTarget||e));
const deeplink = $t.data('deeplink');
if(window.UIPage.isPc === 'Y') {
// pc-web
alert('앱에서 이용해 주세요.');
}else if(window.UIPage.isApp === 'Y') {
// app
let referrerId = '';
const canonicalUrlIndex = deeplink.indexOf('%24canonical_url=');
if(canonicalUrlIndex > -1) {
const fromUrlToEnd = deeplink.slice(canonicalUrlIndex);
const sliceWithDollar = fromUrlToEnd.split('%24')[1]; // %24 구분자로 연결된 파라미터 제거
const sliceWithAmpersand = sliceWithDollar.split('&')[0]; // & 구분자로 연결된 파라미터 제거
const canonicalUrl = sliceWithAmpersand.split('=')[1]; // canonical_url value
const decodedCanonicalUrl = decodeURIComponent(canonicalUrl); // 디코딩
const url = new URL(decodedCanonicalUrl);
referrerId = (url.searchParams.get('referrer_id')||'');
}
PageCallback.agreeAppPushAndOpenPushsetLayer(referrerId);
} else {
// mobile-web
if(deeplink && deeplink.indexOf('canonical_url') > -1) {
window.location.href = deeplink;
}else if (deeplink){
window.airbridgeOpenDeeplinkClick(deeplink);
}
}
}
window.updateBrazeState = function () {
try {
eAjax.post({
url: "/temp/braze-account/state",
contentType: "application/json",
dataType: "json"
}).done(function (response) {
if (response.resultCode == 200) {
console.log("braze-account success");
} else {
console.log("braze-account error", response.resultMessage);
}
});
} catch (error) {
console.log("braze-account 호출 오류");
}
};
(function (isUndefined) {
const foStaticUrl = window.UIPage.server['fo-static'];
const itemUrl = window.UIPage.itemUrl;
const imageCdn = 'https://item.elandrs.com';
var getImageByDCode = function(images, dCode) {
if(images && dCode) {
return images.filter(img => img.imageDCode === dCode)[0].imagePath;
} else {
return '';
}
}
var getCdnFullPath = function(imagePath='', width='', height='', quality='100') {
var domain = '';
if(imagePath) {
if(imagePath.startsWith('r')) {
domain = itemUrl;
} else {
domain = imageCdn;
}
var path = getCdnPath(imagePath);
var params = '?w='+width+'&h='+height+'&q='+quality+'';
if(!(path.endsWith(".gif")) && (width || height)) {
return domain + '/' + path + params;
} else {
return domain + '/' + path;
}
} else {
return '';
}
}
var getCdnPath = function(imagePath='') {
if(imagePath) {
if(imagePath.trim().startsWith('/')) {
return 'upload' + imagePath.trim();
} else {
return imagePath.trim();
}
} else {
return '';
}
}
var getItemImageHtml = function (params, imagePath) {
let html = '';
if(params.slider === 'Y') {
if(imagePath && imagePath.length > 0) {
if(params.imageLoaded) {
html = ' ';
} else {
html = ' ';
}
} else {
if(params.imageLoaded) {
html = ' ';
} else {
html = ' ';
}
}
} else {
if(imagePath && imagePath.length > 0) {
if(params.imageLoaded) {
html = ' ';
} else {
html = ' ';
}
} else {
if(params.imageLoaded) {
html = ' ';
} else {
html = ' ';
}
}
}
return html;
}
var maxmembersImg = (function () {
var u = foStaticUrl + '/img/mo/common/max_txt4.png';
var w = 100;
var h = 26;
if (window.UIPage.isPc === 'Y') {
u = foStaticUrl + '/img/pc/common/max_txt4.png';
w = 120;
h = 31;
}
return ' ';
})();
var MacroUiItem = function (item, params) {
var dispMallNo = window.UIPage.dispMallNo;
var belongDispMallNo = window.UIPage.belongDispMallNo;
var imageLoaded = false;
var wrapTag = "div";
if (params != isUndefined) {
if (params.imageLoaded != isUndefined) {
imageLoaded = params.imageLoaded;
}
if (params.wrapTag != isUndefined) {
wrapTag = params.wrapTag;
}
//상위기본몰이 이랜드몰일경우 맥스멤버스 대상
if (belongDispMallNo == "0000014") {
params.maxPointTag = "Y";
params.maxmembers = "Y";
}
}
var itemLayerQueryStr = "itemNo=" + (item.itemNo || "") + "&" + "lowerVendNo=" + (item.lowerVendNo || "") + "&" + "parentItemNo=" + (item.parentItemNo || "") + "&" + "parentItemTcode=" + (item.parentItemTcode || "");
var queryStr = "";
if (item.lowerVendNo) {
queryStr = "itemNo=" + (item.itemNo || "") + "&" + "lowerVendNo=" + (item.lowerVendNo || "");
} else {
queryStr = "itemNo=" + (item.itemNo || "");
}
var attrs = {
href: '/i/item?' + queryStr,
itemNo: (item.itemNo || ''),
cttn: (item.marketingData || ''),
productCttn: (item.brandName || '') + '|^|' + (item.itemName || '') + '|^|' + (item.itemNo || '') + '|^|' + (item.finalDcPrice || ''),
gaParams: '{"page_area":"","items":[{"item_id":"' + (item.itemNo || '') + '","item_name":"' + (item.itemName.replace(/[\'\"]/gi, '') || '') + '","currency":"KRW","item_brand":"' + (item.brandName || '') + '","item_category":"' + (item.dispCategoryName || '') + '","price":"' + (item.sellprice || '') + '"}]}',
};
var layouts = [];
var _thumbwrap = (function () {
var layouts = [];
var _soldout = (function () {
var r = [];
if (params.sellEndYn === "Y" && item.sellEndYn === "Y") {
r.push('');
r.push("판매 종료 ");
r.push("
");
} else if (item.soldoutYn === "Y" || (item.reservationYn === "N" && item.itemSellPossYn === "N") || (item.reservationYn === "Y" && item.reservationSellYn === "N")) {
if (!item.sellStartTs || new Date(item.sellStartTs) < new Date()) {
r.push("SOLD OUT ");
if (params.soldOutElement && params.soldOutElement === "div") {
// wrapper
r.unshift('');
r.push("
");
} else {
// wrapper
r.unshift('');
r.push(" ");
var $r = $(r.join(''));
$r.attr({
'href': attrs.href,
'data-cttn': attrs.cttn,
'data-product-cttn': attrs.productCttn,
'data-ga-con': 'select_item',
'data-ga-key': 'ecommerceLogEvent',
'data-ga-params': attrs.gaParams,
});
return $r[0].outerHTML;
}
}
}
return r.join('');
})();
layouts.push(_soldout);
var _thumb = (function () {
var r = [];
if (params.itemNumber === "Y") {
r.push('선택 ' + (params.num || 0) + "
");
}
if (params.numbering === "Y" && params.bestrank && params.bestrank > 0) {
r.push('' + (params.bestrank + (params.rankInitVal || 0)) + "
");
}
var verticalClass = "";
if (item.hasSqure != isUndefined && item.hasSqure) {
verticalClass = " vertical";
}
if (params.slider === "Y") {
if (params.squareThumb === "Y") {
r.push('');
}
r.push('
');
if (params.imageDCode && params.imageDCode === "070") {
var imagePath = getImageByDCode(item.image || [], params.imageDCode);
if (imagePath) {
r.push(getItemImageHtml(params, imagePath));
} else {
r.push(getItemImageHtml(params, item.representImagePath));
}
} else if (item.representImagePath) {
r.push(getItemImageHtml(params, item.representImagePath));
} else {
r.push(getItemImageHtml(params));
}
r.push("
");
if (params.squareThumb === "Y") {
r.push("
");
}
} else {
if (params.squareThumb === "Y") {
r.push('');
}
r.push('
');
if (params.imageDCode && params.imageDCode === "070" && getImageByDCode(item.image || [], params.imageDCode)) {
var imagePath = getImageByDCode(item.image || [], params.imageDCode);
r.push(getItemImageHtml(params, imagePath));
} else if (item.representImagePath) {
r.push(getItemImageHtml(params, item.representImagePath));
} else {
r.push(getItemImageHtml(params));
}
r.push("
");
if (params.squareThumb === "Y") {
r.push("
");
}
if (params.flag === "Y" && item.flagImgPath) {
r.push('');
r.push(' ');
r.push(" ");
}
}
if (params.badge === "Y") {
if (params.maxmembers === "Y" && item.maxmembersApplyYn === "Y") {
r.push('');
r.push('
');
r.push(' ');
r.push(" ");
r.push("
");
} else {
if (item.badgeName) {
(item.badgeName || []).forEach((badge) => {
r.push('');
r.push("" + badge + " ");
r.push("
");
});
}
}
}
// wrapper
r.unshift('');
r.push(" ");
var $r = $(r.join(''));
$r.attr({
'href': attrs.href,
'data-item-no': attrs.itemNo,
'data-cttn': attrs.cttn,
'data-product-cttn': attrs.productCttn,
'data-ga-con': 'select_item',
'data-ga-key': 'ecommerceLogEvent',
'data-ga-params': attrs.gaParams,
});
return $r[0].outerHTML;
})();
layouts.push(_thumb);
var _functionLayer = (function () {
var r = [];
if (params.functionLayer === "Y") {
var _preview = (function () {
var r = [];
r.push('');
r.push('');
r.push('상품미리보기 ');
r.push(" ");
r.push(" ");
var $r = $(r.join(''));
$r.find('a').attr({
'data-query-str': itemLayerQueryStr,
'data-cttn': attrs.cttn.replace('i', 'l'),
'data-product-cttn': attrs.productCttn,
});
return $r[0].outerHTML;
})();
r.push(_preview);
var _expand = (function () {
var r = [];
r.push('');
r.push('');
r.push('새창열기 ');
r.push(" ");
r.push(" ");
var $r = $(r.join(''));
$r.find('a').attr({
'href': attrs.href,
'data-cttn': attrs.cttn,
'data-product-cttn': attrs.productCttn,
'data-ga-con': 'select_item',
'data-ga-key': 'ecommerceLogEvent',
'data-ga-params': attrs.productCttn,
});
return $r[0].outerHTML;
})();
r.push(_expand);
// wrapper
r.unshift('");
}
return r.join('');
})();
layouts.push(_functionLayer);
var _time = (function () {
var r = [];
if (params.time === "Y") {
r.push('');
r.push("남은시간 ");
r.push(' ');
r.push("
");
}
return r.join('');
})();
layouts.push(_time);
var _commingsoon = (function () {
var r = [];
if (item.sellStartTs && new Date(item.sellStartTs) > new Date()) {
var sellStartTs = new Date(item.sellStartTs);
if (sellStartTs) {
r.push('');
r.push('COMING SOON ');
r.push('');
r.push('' + item.sellStartTs.split(" ")[0].replaceAll("-", ".") + " ");
r.push('' + item.sellStartTs.split(" ")[1] + " ");
r.push(" ");
r.push("
");
// wrapper
r.unshift('');
r.push(" ");
var $r = $(r.join(''));
if (params.newCommingSoon === "Y") {
$r.addClass('flag-type');
}
$r.attr({
'href': attrs.href,
'data-cttn': attrs.cttn,
'data-product-cttn': attrs.productCttn,
'data-ga-con': 'select_item',
'data-ga-key': 'ecommerceLogEvent',
'data-ga-params': attrs.gaParams,
});
return $r[0].outerHTML;
}
}
return r.join('');
})();
layouts.push(_commingsoon);
var _wish = (function () {
var r = [];
if (params.wish === "Y") {
r.push('");
var $r = $(r.join(''));
if (item.wishYn === 'Y') {
$r.find('a').addClass('active');
}
$r.find('a').attr({
'data-item-no': attrs.itemNo,
'data-sellprice': (item.sellprice || ""),
'data-item-name': (item.itemName || ""),
'data-image-path': getCdnFullPath(item.representImagePath),
'data-brand-name': (item.brandName || ""),
'data-login-promise': '{"callback":"ToggleWish"}',
'data-realpage': item.realPage,
'data-realindex': item.realIndex,
});
return $r[0].outerHTML;
}
return r.join('');
})();
layouts.push(_wish);
var _timedeal = (function () {
var r = [];
if (params.timeDeal === "Y") {
r.push('');
r.push('
');
r.push(' ');
r.push("
");
r.push("
");
}
return r.join('');
})();
layouts.push(_timedeal);
// wrapper
layouts.unshift('');
layouts.push("
");
return layouts.join('');
})();
layouts.push(_thumbwrap);
var _infowrap = (function () {
var layouts = [];
if (params.itemInfo === "Y") {
var _name = (function () {
var r = [];
r.push('");
var $r = $(r.join(''));
$r.find('a').attr({
'href': attrs.href,
'data-item-no': attrs.itemNo,
'data-cttn': attrs.cttn,
'data-product-cttn': attrs.productCttn,
'data-ga-con': 'select_item',
'data-ga-key': 'ecommerceLogEvent',
'data-ga-params': attrs.gaParams,
});
return $r[0].outerHTML;
})();
layouts.push(_name);
var _detail = (function () {
var layouts = [];
var _price = (function () {
var r = [];
if (params.priceInfoDetails.orgSellprice === "Y" && item.orgSellprice && item.orgSellprice > 0 && item.orgSellprice > item.sellprice) {
r.push('');
r.push('출시가 ' + item.orgSellprice.toLocaleString("ko-KR") + " 원 ");
r.push(" ");
}
if (params.priceInfoDetails.sellprice === "Y" && item.sellprice && item.sellprice > item.finalDcPrice) {
r.push('');
r.push('판매가 ' + item.sellprice.toLocaleString("ko-KR") + " 원 ");
r.push(" ");
}
if (params.priceInfoDetails.finalDcPrice === "Y" && (item.finalDcPrice || 0) > 0) {
r.push('');
r.push('최종할인가 ' + item.finalDcPrice.toLocaleString("ko-KR") + " 원 ");
r.push(" ");
}
if (params.priceInfoDetails.dcRate === "Y" && item.dcRate && (item.dcRate || 0) > 0 && (item.dcRate || 0) < 100) {
r.push('');
r.push('할인율 ' + item.dcRate + " % ");
r.push(" ");
}
// wrapper
r.unshift('');
r.push("
");
return r.join('');
})();
layouts.push(_price);
var _maxm = (function () {
var r = [];
if (params.maxmembers === "Y" && params.maxPointTag === "Y" && item.maxmembersApplyYn === "Y" && item.maxPoint > 0) {
r.push('');
r.push('');
r.push("MAX 적립 ");
r.push("" + item.maxPoint.toLocaleString("ko-KR") + "원 ");
r.push(" ");
r.push("
");
}
return r.join('');
})();
layouts.push(_maxm);
var _tag = (function () {
var r = [];
const maxIconCnt = params.maxmembers === "Y" && item.maxmembersApplyYn === "Y" ? 2 : 4;
if (params.icon === "Y") {
if (item.iconName) {
r.push('');
(item.iconName || []).slice(0, maxIconCnt).forEach((icon) => {
r.push("" + icon + " ");
});
r.push("
");
}
}
return r.join('');
})();
layouts.push(_tag);
var _grade = (function () {
var r = [];
if (params.score === "Y") {
r.push('');
r.push('
' + item.reviewScore + "점
");
if (item.reviewCount && (item.reviewCount || 0) > 0) {
r.push('
리뷰(' + item.reviewCount + ')개의 상품평 ');
}
r.push("
");
}
return r.join('');
})();
layouts.push(_grade);
// wrapper
layouts.unshift('');
layouts.push("
");
return layouts.join('');
})();
layouts.push(_detail);
// wrapper
layouts.unshift('');
layouts.push("
");
}
return layouts.join('');
})();
layouts.push(_infowrap);
// wrapper
var _rootwrap = (function () {
var _unshift = (function () {
var r = [];
r.push("<" + wrapTag + ">");
r.push('');
r.push('
');
return r.join('');
})();
var _push = (function () {
var r = [];
r.push('
');
r.push('
');
r.push("" + wrapTag + ">");
return r.join('');
})();
return {
unshift: _unshift,
push: _push,
}
})();
layouts.unshift(_rootwrap.unshift);
layouts.push(_rootwrap.push);
return layouts.join("");
};
window.MacroUiItem = MacroUiItem;
})();
var $cps = $('.cx-unit-slider');
var build = function (idx) {
var $cp = $cps.eq(idx);
var inst = $cp.data('Component');
var $counts = $cp.find('[data-item-countdown]');
$counts.on('CountDownEnd', function (e) {
var $t = $(e.currentTarget);
var $slide = $t.closest('.swiper-slide');
var _idx = $slide.index();
inst.slider.removeSlide(_idx);
});
};